package mx.com.theboard.server.Servicios;



import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

import mx.com.theboard.client.InterfacesServlets.CreaPizarron;
import mx.com.theboard.client.InterfacesServlets.GuardaNota;
import mx.com.theboard.server.handlers.NotaArchivoHandler;
import mx.com.theboard.server.handlers.NotaDibujoHandler;
import mx.com.theboard.server.handlers.NotaHandlerI;
import mx.com.theboard.server.handlers.NotaImagenHandler;
import mx.com.theboard.server.handlers.NotaTextoHandler;
import mx.com.theboard.shared.Constantes;
import mx.com.theboard.shared.entidades.Nota;
import mx.com.theboard.shared.entidades.Pizarron;
import mx.com.theboard.shared.entidades.Usuario;


import com.google.appengine.api.datastore.Key;
import com.google.appengine.api.datastore.Query.FilterOperator;
import com.google.appengine.api.datastore.Transaction;

import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import com.google.code.twig.ObjectDatastore;
import com.google.code.twig.annotation.AnnotationObjectDatastore;


public class CreaPizarronImpl extends RemoteServiceServlet implements CreaPizarron {
	
	@Override
	public Pizarron greetServer(Usuario usuario) throws IllegalArgumentException {
		ObjectDatastore datastore  = new AnnotationObjectDatastore();
		Usuario usuariobase = datastore.load(Usuario.class,usuario.getIdUsuario());
			
		if(usuariobase.getNotas() == null || usuariobase.getNotas().size()==0){
			
			Pizarron pizarron = new Pizarron();
			pizarron.setFecha(new Date());
			pizarron.setTitulo("Sin titulo");
			if(pizarron.getUsuarioHasPizarrons()!= null){
				pizarron.getUsuarioHasPizarrons().add(usuariobase);
			}else{
				Set<Usuario> set = new HashSet<Usuario>();
				set.add(usuariobase);
				pizarron.setUsuarioHasPizarrons(set);
			}
			Key key = datastore.store().instance(pizarron).now();
			
			
			Pizarron p = datastore.load(key);
			
			
			usuariobase = datastore.load(Usuario.class,usuario.getIdUsuario());			
			if(usuariobase.getUsuarioHasPizarrons() != null)
				usuariobase.getUsuarioHasPizarrons().add(p);
			else{
				Set<Pizarron> set = new HashSet<Pizarron>();
				set.add(p);
				usuariobase.setUsuarioHasPizarrons(set);
			}			
			datastore.update(usuariobase);			

			
			
			return p;
			
		}else{
			Iterator<Nota> notas = usuariobase.getNotas().iterator();
			if(notas.hasNext()){
				Pizarron p = notas.next().getPizarron();
				return datastore.load(Pizarron.class,p.getIdPizarron());
			}else{
				return null;
			}
			
		}
	}
	
	

	
}
